iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

System Software Introduction系列 第 9

System Software - System Utilities Binutils

  • 分享至 

  • xImage
  •  

System Utilities泛指幫助software developer進行開發、執行、除錯的工具,system utilities提供了build code/debug的功能,幫助software developer能得到可運行在CPU上的software,並且出錯時有工具協助debug


What is object file

Object file (目的檔)是指compiler或assembler處理過source code之後處理的產物,因為存放著object code (目的碼,也就是machine code) 而稱為object files,Object files還沒經過linker連結之前沒有辦法直接被執行。

  • Object file內包含的內容主要是machine code以及其他附加的資訊
    Symbol table: 包含symbol (function名稱、global variable名稱、local static variable名稱)資訊,給linker和debugger使用
    Data的內容: 程式當中用到的global variable/local static variables,他們的初始值會被記錄下來
    Debug information: 讓debugger使用的資料,可以在用binutils或debugger取得詳細內容

  • Object files的格式
    Linux: ELF (Executable and Linkable Format)
    Windows: PE (Portable Executable)

What is GNU Binutils

GNU binutils是專門用來處理object files的一套工具,binutils是GNU對這種工具的名稱,其他compilation toolchain也會提供類似工具但名稱或指令不一樣,同時binutils也可以用於處理其他compilation toolchain產生的object files,因為使用的格式為共通格式

GNU binutils中主要有兩大部分

  • 和GNU toolchain高度相關的工具
    as: GNU assembler,把assembly轉成object files的工具
    ld: GNU linker,把object files連結成執行檔的工具
    gold: 一個新版,速度更快的linker,只能使用於ELF格式

  • 查看、操作object files內容的工具
    addr2line: 把address轉回檔名行號
    ar: 把object files打包成C library的工具
    nm: 顯示symbol table的工具
    objdump: 把object files內容依照指定範圍dump出來的工具
    readelf: 針對ELF格式object files去讀取出object files內容的工具,功能類似於objdump


上一篇
System Software - System Utilities Compiler Toolchain
下一篇
System Software - System Utilities Debugger
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言